#ifndef __mstore__
#define __mstore__

#include <util.h>
#include <stdio.h>
#include <stdint.h>
#include <openssl/sha.h>

typedef struct MHash MHash;
typedef struct MStore MStore;
typedef struct RenderObj RenderObj;

struct MHash
{
	u8	hash[SHA_DIGEST_LENGTH];
};

/*
 * MStore API
 */
extern MStore*	mstore_init(u64 cmin, Error *err);
extern int	mstore_insert(void *obj, u64 len, MStore *ms, Error *err);
extern int	mstore_search(void **obj, MHash mid, MStore *ms, Error *err);
extern int	mstore_delete(MHash *mid, MStore *mstore, Error *err);

extern int	mhashcmp(MHash *m1, MHash *m2);
extern MHash	mhash(void *data, u64 len);

extern void	mhashprint(FILE *fp, MHash *mhash);

#endif
